Addressing thermal effects in integrated circuits (ICs) is an ongoing challenge. The performance of an IC varies as temperature or voltage changes, and often the resulting variation is undesirable. Moreover, high temperatures or voltages can damage or destroy integrated circuit components.
Some ICs, referred to as programmable IC, include programmable hardware resources (e.g., programmable hardware resources and/or programmable routing resources) that can be programmed to implement various circuits. One type of programmable IC, referred to as a field programmable gate array (FPGA), typically includes an array of programmable tiles. These programmable tiles comprise various types of logic blocks, which can include, for example, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay locked loops (DLLs), bus or network interfaces such as Peripheral Component Interconnect Express (PCIe) and Ethernet, and so forth.
Some ICs include enough components and functionality to effectively serve as a computer system on a single IC chip. ICs with such functionality are sometimes referred to as a system on a chip (SOC). An SOC can include one or more processor circuits that execute software instructions in order to carry out different functions and/or include programmable hardware resources that can be programmed to form various circuit designs. Upon startup (e.g., hard-power on or hard reset), the SOC can first execute a boot read only memory (ROM) code that configures the SOC to retrieve and load a boot image. The boot image can specify how peripheral functional blocks of the SOC are configured, configure programmable resources to implement a hardware portion of a system design, setup and run the operating system (OS) to implement a software portion of the system design, and/or perform other boot-related functions. The hardware portion specifies a hardware circuit arrangement included in the system design. The software portion of the system design specifies a set of instructions that are executed by a processor of the SOC during operation of the system.
It should be appreciated that execution of program code within a processor is distinguishable from “programming” or “configuring” the programmable hardware circuitry that may be available on an IC. The act of programming or configuring the programmable circuitry of an IC results in the implementation of different physical circuitry as specified by the configuration data within the programmable circuitry.